# 文件名: loop_examples.py
# 说明: Python3 循环语句示例合集

print("\n--- 示例1: 基础 for 循环（遍历列表）---")
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
    print(f"我喜欢吃{fruit}")  # 遍历列表中的每个元素


print("\n--- 示例2: 使用 range() 生成数字序列 ---")
# range(start, end, step) 生成 [start, end) 的整数序列
for i in range(3):       # 0,1,2
    print(f"当前数字: {i}")

print("--- range(1, 5) ---")
for i in range(1, 5):    # 1,2,3,4
    print(i)

print("--- range(0, 10, 2) ---")
for i in range(0, 10, 2): # 0,2,4,6,8
    print(i)


print("\n--- 示例3: while 循环基础 ---")
count = 0
while count < 3:  # 当条件为 True 时循环
    print(f"计数: {count}")
    count += 1    # 修改条件变量，避免无限循环


print("\n--- 示例4: break 和 continue ---")
# break: 直接终止整个循环
print("遇到5时终止循环:")
for num in range(10):
    if num == 5:
        break
    print(num)  # 输出0-4

# continue: 跳过当前迭代，进入下一次循环
print("跳过偶数:")
for num in range(10):
    if num % 2 == 0:
        continue
    print(num)  # 输出1,3,5,7,9


print("\n--- 示例5: 循环中的 else 子句 ---")
# else 在循环正常结束时执行（未被 break 终止）
for n in range(2, 5):
    for x in range(2, n):
        if n % x == 0:
            print(f"{n} = {x}*{n//x}")
            break
    else:  # 内层循环未触发 break 时执行
        print(f"{n} 是质数")


print("\n--- 示例6: 嵌套循环 ---")
# 生成乘法表的一部分
for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i}x{j}={i*j}", end="\t")  # end="\t" 替换默认换行
    print()  # 外层循环换行


print("\n--- 示例7: 遍历字典 ---")
person = {"name": "Alice", "age": 25, "city": "北京"}
print("遍历键:")
for key in person:
    print(key)

print("遍历键值对:")
for key, value in person.items():
    print(f"{key}: {value}")


print("\n--- 示例8: 列表推导式（循环的简洁写法）---")
# 生成平方数列表
squares = [x**2 for x in range(5)]
print("平方数列表:", squares)  # [0,1,4,9,16]

# 带条件的推导式
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print("偶数的平方:", even_squares)  # [0,4,16,36,64]


print("\n--- 示例9: 无限循环与用户输入控制 ---")
# 通过用户输入退出循环
while True:
    user_input = input("输入 'exit' 退出: ")
    if user_input.lower() == "exit":
        print("程序已退出")
        break
    else:
        print(f"你输入了: {user_input}")


print("\n--- 关键点总结 ---")
print("1. for 循环: 遍历可迭代对象（列表/字符串/字典等）")
print("2. while 循环: 条件为真时重复执行")
print("3. break/continue: 控制循环流程")
print("4. else 子句: 循环正常结束时触发")
print("5. 注意避免无限循环（确保 while 条件最终为假）")
print("6. 列表推导式可简化生成列表的逻辑")